/**
 * 
 */
package com.qolome.knowledge.thread;

import java.util.Map;

import org.springframework.util.CollectionUtils;

import com.google.common.collect.Maps;

import lombok.extern.slf4j.Slf4j;

/**
 * @Description: 线程测试 
 * @author 姜锋
 * @date 2019年12月23日 下午12:25:10 
 * @version V1.0   
 *
 */
@Slf4j
public class ThreadLocalTest {
	
	/**
	 * ThreadLocal 中保存的数据是 Map
	 */
	static final ThreadLocal<Map<String, String>> context = new ThreadLocal<>();

	public void testThread() {
	  // 从上下文中拿出 Map
	  Map<String, String> contextMap = context.get();
	  if (CollectionUtils.isEmpty(contextMap)) {
	    contextMap = Maps.newHashMap();
	  }

	  contextMap.put("key1", "value1");
	  context.set(contextMap);
	  log.info("key1，value1被放到上下文中");
		// 从上下文中拿出刚才放进去的数据
	  getFromComtext();
	}

	private String getFromComtext() {
	  String value1 = context.get().get("key1");
	  log.info("从 ThreadLocal 中取出上下文，key1 对应的值为：{}", value1);
	  return value1;
	}
	
	public static void main(String[] args) {
		ThreadLocalTest a = new ThreadLocalTest();
		a.testThread();
		a.getFromComtext();
	}
}
